// 实现 int sqrt(int x) 函数。

// 计算并返回 x 的平方根，其中 x 是非负整数。

// 由于返回类型是整数，结果只保留整数的部分，小数部分将被舍去。

// 示例 1:
// 输入: 4
// 输出: 2

// 示例 2:
// 输入: 8
// 输出: 2
// 说明: 8 的平方根是 2.82842..., 
//      由于返回类型是整数，小数部分将被舍去。
object Solution { // 二分查找满足 k^2 ≤ x 的最大 k 值
  def mySqrt(x: Int): Int = {
    if (x == 0) return 0
    var (l, r) = (0, x)
    while (l < r) {
      val mid = (r + l + 1) >>> 1
      if (mid * mid.asInstanceOf[Long] > x) r = mid - 1
      else l = mid
    }
    l
  }
}
